#!/bin/bash

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[0;33m'
NC='\033[0m' # 无颜色

# 定义网口名称
INTERFACE="enp1s0"
TARGET_IP="192.168.10.100"


if ping -c 4 $TARGET_IP &> /dev/null; then
    echo -e "${GREEN}多线激光已经配置过！如果程序中无消息，请联系技术人员${NC}"
    exit
fi

# 备份现有网络配置
if sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak; then
    echo "网络配置已备份"
else
    echo "备份网络配置失败，请检查权限和文件存在性"
    exit 1
fi

# 将配置多线专用yaml文件设置为默认网卡
if sudo cp /etc/netplan/01-network-manager-all.yaml.for_livox /etc/netplan/01-network-manager-all.yaml; then
    echo "使用 Livox 配置更新网络配置成功"
else
    echo "使用 Livox 配置更新网络配置失败，请检查权限和文件存在性"
    exit 1
fi

if sudo netplan apply; then
    echo "已应用网络配置"
else
    echo "无法应用网络配置，请检查 netplan 配置"
    exit 1
fi

# # 检查网络是否恢复
# if ip addr show $INTERFACE | grep -q "inet"; then
#     echo "网络接口 $INTERFACE 可用"
# else
#     echo "网络接口 $INTERFACE 不可用，请检查配置文件"
#     exit 1
# fi

echo "开始配置 Livox 设备..."
cd ~/LivoxViewer2/ || { echo "无法进入 LivoxViewer2 目录"; exit 1; }
./LivoxViewer2.sh

# 等待用户输入大写 Y
while true; do
    read -p "完成配置，或者要结束配置，请输入大写 Y 继续: " user_input
    if [[ "$user_input" == "Y" ]]; then
        break
    else
        echo "输入无效，请输入大写 Y"
    fi
done

# 配置完成后的操作
echo "Livox 设备配置完成"

# 定义恢复网络配置的函数
restore_network_config() {
    echo "恢复网络配置..."
    # 恢复备份的网络配置
    if sudo cp /etc/netplan/01-network-manager-all.yaml.bak /etc/netplan/01-network-manager-all.yaml; then
        echo "网络配置已恢复"
    else
        echo "无法恢复网络配置，请检查权限和文件存在性"
    fi

    if sudo netplan apply; then
        echo "已应用恢复的网络配置"
    else
        echo "无法应用恢复的网络配置，请检查 netplan 配置"
        exit 1
    fi

    # # 检查网络是否恢复
    # if ip addr show $INTERFACE | grep -q "inet"; then
    #     echo "网络接口 $INTERFACE 恢复正常"
    # else
    #     echo "网络接口 $INTERFACE 未恢复，请检查配置文件"
    # fi
    sleep 3
    # 测试网络连通性
    if ping -c 4 $TARGET_IP &> /dev/null; then
        echo -e "${GREEN}成功 ping 到多线激光目标 IP $TARGET_IP! 多线激光设备配置成功${NC}"
    else
        echo -e "${RED}无法 ping 到多线激光目标 IP $TARGET_IP, 请重新配置，如果依然失败，请联系技术人员${NC}"
    fi

}

# 使用 trap 命令捕获中断信号
trap restore_network_config SIGINT SIGTERM EXIT

# 恢复网络配置
restore_network_config

